package org.logstashplugins;

import co.elastic.logstash.api.Configuration;
import co.elastic.logstash.api.Context;
import co.elastic.logstash.api.Event;
import co.elastic.logstash.api.Filter;
import co.elastic.logstash.api.FilterMatchListener;
import co.elastic.logstash.api.LogstashPlugin;
import co.elastic.logstash.api.PluginConfigSpec;
import org.apache.commons.lang3.StringUtils;

import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;

// class name must match plugin name
//@LogstashPlugin(name = "java_filter_example")
public class JavaFilterExample{
//	implements Filter {
//
//
//    public static final PluginConfigSpec<String> SOURCE_CONFIG =
//            PluginConfigSpec.stringSetting("source", "message");
//
//    private static final ThreadLocal<SimpleDateFormat> threadLocal = new ThreadLocal<SimpleDateFormat>() {
//    	protected SimpleDateFormat initialValue() {
//    		return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
//    	};
//    };
//
//    private String id;
//    private String sourceField;
//
//    public JavaFilterExample(String id, Configuration config, Context context) {
//        // constructors should validate configuration options
//        this.id = id;
//        this.sourceField = config.get(SOURCE_CONFIG);
//    }
//
//    @Override
//    public Collection<Event> filter(Collection<Event> events, FilterMatchListener matchListener) {
//        for (Event e : events) {
//            Object f = e.getField(sourceField);
//            if (f instanceof String) {
//                e.setField(sourceField, StringUtils.reverse((String)f));
//                matchListener.filterMatched(e);
//            }
//        }
//        System.out.println("hello,java插件工作了，当前时间："+threadLocal.get().format(new Date()));
//        return events;
//    }
//
//    @Override
//    public Collection<PluginConfigSpec<?>> configSchema() {
//        // should return a list of all configuration options for this plugin
//        return Collections.singletonList(SOURCE_CONFIG);
//    }
//
//    @Override
//    public String getId() {
//        return this.id;
//    }
}
